package com.mumu.muPictureBackend.manager.upload;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ByteUtil;
import com.mumu.muPictureBackend.exception.ErrorCode;
import com.mumu.muPictureBackend.exception.ThrowUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;

/**
 * 继承了里面的抽象类 然后实现里面的特有方法 并且可以使用里面的共有代码块
 */
@Service
public class FilePictureUpload extends PictureUploadTemplate {


    /**
     * 将输入源输入到本地临时文件file中
     *
     * @param inputSource
     * @param file
     */
    @Override
    public void transferToLocalFile(Object inputSource, File file) throws IOException {
        MultipartFile multipartFile = (MultipartFile) inputSource;
        //将文件数据写入到这个file中(这里是地址传参的file)
        multipartFile.transferTo(file);
    }

    /**
     * 获取文件的原始名称
     *
     * @param inputSource
     * @return
     */
    @Override
    public String getOriginalFilename(Object inputSource) {
        MultipartFile multipartFile = (MultipartFile) inputSource;
        return multipartFile.getOriginalFilename();
    }

    /**
     * 校验文件大小和格式
     *
     * @param inputSource
     */
    @Override
    public void ValidPicture(Object inputSource) {
        MultipartFile multipartFile = (MultipartFile) inputSource;
        ThrowUtils.throwIf(multipartFile == null, ErrorCode.NOT_FOUND_ERROR, "图片呢??");
        //1. 校验文件大小
        long fileSize = multipartFile.getSize();//获取该文件的大小 单位:字节
        final long ONE_M = 1024 * 1024;
        ThrowUtils.throwIf(fileSize > 10 * ONE_M, ErrorCode.PARAMS_ERROR, "图片能再大点嘛?(图片太大啦 不要超过2M 硬盘有限 装不下)");
        //2. 校验文件后缀
        String suffix = FileUtil.getSuffix(multipartFile.getOriginalFilename());
        //允许的图片后缀名列表:
        final List<String> ALLOW_FORMAT_LIST = Arrays.asList("jpeg", "png", "jpg", "webp");
        ThrowUtils.throwIf(!ALLOW_FORMAT_LIST.contains(suffix), ErrorCode.PARAMS_ERROR, "只支持:\"jpeg\", \"png\", \"jpg\", \"webp\" 这些图片格式哦");
    }
}
